Error Code এবং Return Value চেকিং

Computer Programming - সি স্ট্যান্ডার্ড লাইব্রেরি রেফারেন্স (C Standard Library Reference) Error Handling Functions (এরর হ্যান্ডলিং ফাংশনস) |
261
261

Error Code এবং Return Value চেকিং

সি প্রোগ্রামিং ভাষায় error code এবং return value চেকিং একটি গুরুত্বপূর্ণ প্র্যাকটিস, যা প্রোগ্রাম চলাকালীন সম্ভাব্য ভুল বা ত্রুটি সনাক্ত করতে সাহায্য করে। বিভিন্ন সি ফাংশন return value অথবা error code রিটার্ন করে, যা ব্যবহারের সময় ত্রুটির অবস্থাকে চিহ্নিত করতে ব্যবহৃত হয়। সঠিক error handling কোডের স্থিতিশীলতা নিশ্চিত করে এবং অপ্রত্যাশিত আচরণ বা ক্র্যাশ এড়ায়।

Error Code এবং Return Value চেকিং - Overview

  • Return Value: কোনো ফাংশন যখন কাজ সম্পন্ন করে, তখন সেটি একটি মান রিটার্ন করতে পারে, যা প্রোগ্রামারকে জানাতে পারে যে, ফাংশনটি সফলভাবে কাজ করেছে কি না।
  • Error Code: অনেক সি ফাংশন এমন error code রিটার্ন করে, যা ত্রুটির ধরন চিহ্নিত করতে সাহায্য করে। যেমন, errno ভেরিয়েবলটি সিস্টেম কলের ত্রুটি চিহ্নিত করতে ব্যবহৃত হয়।

১. Return Value চেকিং

ফাংশন যখন একটি মান রিটার্ন করে, তখন এই রিটার্ন মানটি চেক করা গুরুত্বপূর্ণ, বিশেষত যখন ফাংশনের সফলতা বা ব্যর্থতা নির্ভর করে সেই মানের উপর। উদাহরণস্বরূপ, fopen() ফাংশনটি ফাইল খুলতে ব্যবহৃত হয় এবং এটি সফল হলে একটি ফাইল পয়েন্টার রিটার্ন করে, কিন্তু যদি ফাইলটি না খোলা যায়, এটি NULL রিটার্ন করে।

উদাহরণ: fopen() এর Return Value চেক করা

#include <stdio.h>

int main() {
    FILE *file = fopen("example.txt", "r");

    if (file == NULL) {
        printf("Error: Unable to open file.\n");
        return 1;  // ফাইল খোলার ক্ষেত্রে ত্রুটি
    }

    printf("File opened successfully.\n");
    fclose(file);  // ফাইল বন্ধ করা
    return 0;
}

এখানে fopen() ফাংশনের রিটার্ন ভ্যালু NULL চেক করা হয়েছে। যদি NULL রিটার্ন হয়, তাহলে এটি ফাইল খোলার ত্রুটি নির্দেশ করে এবং প্রোগ্রামটি বন্ধ হয়ে যায়।


২. Error Code চেকিং

অনেক সি ফাংশন error code রিটার্ন করে, বিশেষত সিস্টেম কলের ক্ষেত্রে। উদাহরণস্বরূপ, malloc() ফাংশনটি যখন মেমোরি বরাদ্দে ব্যর্থ হয়, তখন এটি NULL রিটার্ন করে। এছাড়াও, errno ভেরিয়েবলটি সিস্টেম কলের ত্রুটি চিহ্নিত করতে ব্যবহৃত হয়, এবং এর মান বিভিন্ন ত্রুটির কোডের মাধ্যমে ব্যাখ্যা করা যায়।

উদাহরণ: malloc() Error Code চেক করা

#include <stdio.h>
#include <stdlib.h>

int main() {
    int *ptr = (int *)malloc(100 * sizeof(int));

    if (ptr == NULL) {
        printf("Error: Memory allocation failed.\n");
        return 1;  // মেমোরি বরাদ্দে ত্রুটি
    }

    printf("Memory allocated successfully.\n");
    free(ptr);  // মেমোরি মুক্ত করা
    return 0;
}

এখানে malloc() এর রিটার্ন ভ্যালু চেক করা হয়েছে, যদি এটি NULL রিটার্ন করে, তাহলে "Memory allocation failed" বার্তা প্রদর্শন করা হয়।


৩. errno এবং এর ব্যবহারের উদাহরণ

সি প্রোগ্রামে যখন সিস্টেম কল বা স্ট্যান্ডার্ড লাইব্রেরি ফাংশন একটি ত্রুটি ঘটায়, তখন errno ভেরিয়েবল সেট করা হয়, যা ত্রুটির ধরন নির্দেশ করে। errno ভেরিয়েবলটি <errno.h> হেডার ফাইলে ডিফাইন করা থাকে।

উদাহরণ: errno চেক করা

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>

int main() {
    FILE *file = fopen("nonexistent_file.txt", "r");

    if (file == NULL) {
        printf("Error opening file: %s\n", strerror(errno));  // strerror() ব্যবহার করে ত্রুটির বর্ণনা
        return 1;
    }

    fclose(file);
    return 0;
}

এখানে, fopen() যদি ফাইল না খুলতে পারে, তখন errno সেট হয়ে strerror() ফাংশনের মাধ্যমে ত্রুটির বর্ণনা প্রদর্শিত হয়।

errno এর কিছু সাধারণ ত্রুটি কোড:

  • ENOENT: ফাইল বা ডিরেক্টরি খুঁজে পাওয়া যায়নি।
  • ENOMEM: মেমোরি বরাদ্দে ব্যর্থতা।
  • EIO: ইনপুট/আউটপুট ত্রুটি।
  • EINVAL: অবৈধ আর্গুমেন্ট।

৪. কন্ডিশনাল চেকিং এবং Return Value Error Handling

প্রায় সব সিস্টেম কল এবং লাইব্রেরি ফাংশন একটি নির্দিষ্ট রিটার্ন ভ্যালু প্রদান করে, যার মাধ্যমে প্রোগ্রামার সঠিকভাবে ত্রুটি চেক করতে পারেন। কিছু ফাংশনের ক্ষেত্রে ত্রুটি ঘটলে -1 বা NULL রিটার্ন করা হয়, এবং সফল হলে অন্য কোন মান রিটার্ন করা হয়। এই রিটার্ন ভ্যালু চেক করার মাধ্যমে আপনি ত্রুটি পরিচালনা করতে পারবেন।

উদাহরণ: close() এর Return Value চেক

#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>

int main() {
    int file_desc = open("example.txt", O_RDONLY);

    if (file_desc == -1) {
        printf("Error opening file.\n");
        return 1;  // ফাইল ওপেন করতে ব্যর্থ
    }

    // ফাইল বন্ধ করার সময় ত্রুটি চেক করা
    if (close(file_desc) == -1) {
        printf("Error closing file.\n");
        return 1;  // ফাইল বন্ধ করতে ব্যর্থ
    }

    printf("File closed successfully.\n");
    return 0;
}

এখানে, open() এবং close() ফাংশনের রিটার্ন ভ্যালু চেক করা হয়েছে। -1 রিটার্ন হলে এটি ত্রুটি নির্দেশ করে।


সারসংক্ষেপ

  • Return Value চেকিং: যেকোনো ফাংশনের রিটার্ন ভ্যালু চেক করা উচিত, যাতে সফলতা বা ব্যর্থতা সনাক্ত করা যায়। যেমন, fopen() বা malloc() এর রিটার্ন ভ্যালু চেক করে, আপনি ত্রুটি হ্যান্ডলিং করতে পারেন।
  • Error Code চেকিং: সিস্টেম কল বা লাইব্রেরি ফাংশন errno এর মাধ্যমে ত্রুটির ধরন নির্ধারণ করে। strerror() ফাংশনটি errno এর মান ব্যাখ্যা করতে ব্যবহৃত হয়।
  • -1 বা NULL চেকিং: সিস্টেম কল এবং লাইব্রেরি ফাংশনগুলো -1 বা NULL রিটার্ন করলে এটি ত্রুটি নির্দেশ করে।
common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion